// pages/cart/index.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    cartArray: [],
    totalMoney: '0.00',
    totalCount:0,
    selectAll:false,
    startX: 0,//滑动开始坐标
    startY: 0,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    var self = this;
    // 获取购物车数组
    wx.getStorage({
      key: 'cartInfo',
      success: function(res) {
        const cartArray = res.data
        // 遍历每项添加属性
        cartArray.forEach(cart => {
          cart.isSelect = false//状态全都不选
          cart.isTouchMove = false //将删除状态

        })
        // console.log(cartArray)
        self.setData({
          cartArray:cartArray,
          selectAll: false,
          totalMoney: '0.00',
          totalCount: 0
        })
        // 设置Tabbar图标(红圈)
        if (cartArray.length > 0){
          let num =0
          cartArray.forEach(item =>{
            num += item.total
          })
          wx.setTabBarBadge({
            index: 2,
            text: String(num),
          })
        }else(
          wx.removeTabBarBadge({
            index: 2,
          })
        )

      },
    })
  },
// 
  onGetCount(e){
    const index = e.currentTarget.dataset.index
    const cartArray =this.data.cartArray
    // console.log(cartArray)
    cartArray[index].total =e.detail.val;
    this.setData({
      cartArray:cartArray
    })
  },
// 跳转到详情页
  switchGoodDetail(e){
    const index = e.currentTarget.dataset.index;
    const cartArray = this.data.cartArray
    wx.navigateTo({
      url: '/pages/detail/index?id=' + cartArray[index].id,
    })
  },
  // 选择商品
  selectGood(e){
    // console.log(666)
    // 拿到当前索引和商品对象
    const index = e.currentTarget.dataset.index
    const cartArray = this.data.cartArray
    // 合计和数量
    let totalMoney = Number(this.data.totalMoney)
    let totalCount = this.data.totalCount
    // 设置选中状态
    cartArray[index].isSelect = !cartArray[index].isSelect
    // 全选状态
    let selectAll = this.data.selectAll
    // 若选择 
    if (cartArray[index].isSelect) {
      totalMoney += Number(cartArray[index].price) * cartArray[index].total
      // console.log(cartArray[index].price, cartArray[index])
      totalCount = cartArray[index].total
    } else {//取消选择
      totalMoney -= Number(cartArray[index].price) * cartArray[index].total
      totalCount = cartArray[index].total
      selectAll=false
    }
    // 更新数据
    this.setData({
      cartArray: cartArray,
      totalMoney: String(totalMoney.toFixed(2)),//保留两位小数
      totalCount: totalCount,
      selectAll: selectAll
    })
  },
  // 自增自减的价格计算
  addCount(e){
    // 拿到当前索引和商品对象
    const index = e.currentTarget.dataset.index
    const cartArray = this.data.cartArray
    // 合计和数量
    let totalMoney = Number(this.data.totalMoney)
    let totalCount = this.data.totalCount
    if (cartArray[index].isSelect){
      totalMoney += Number(cartArray[index].price) 
      totalCount++
      
      // 更新数据
      this.setData({
        cartArray: cartArray,
        totalMoney: String(totalMoney.toFixed(2)),//保留两位小数
        totalCount: totalCount
      })
    }  
  },
  subCount(e) {
    // 拿到当前索引和商品对象 、合计和数量
    const index = e.currentTarget.dataset.index
    const cartArray = this.data.cartArray
    // 合计和数量
    let totalMoney = Number(this.data.totalMoney)
    let totalCount = this.data.totalCount
    if (cartArray[index].isSelect){ 
      totalMoney -= Number(cartArray[index].price)
      totalCount --
      this.setData({
        cartArray: cartArray,
        totalMoney: String(totalMoney.toFixed(2)),//保留两位小数
        totalCount: totalCount
      })
    }  
  },
  // 全选
  selectAll(){
    const cartArray = this.data.cartArray
    let totalMoney = 0
    let totalCount = 0
    let selectAll = this.data.selectAll
    selectAll = !selectAll
    if (selectAll){
      cartArray.forEach(cart => {
        // 选中状态
        cart.isSelect = true
        // 计算金额和个数
        totalMoney += Number(cart.price) * cart.total
        totalCount += cart.total
      })
    }else{
      cartArray.forEach(cart => {
        cart.isSelect = false
      })
       totalMoney = 0
       totalCount = 0
    }
    this.setData({
      totalMoney: String(totalMoney.toFixed(2)),//保留两位小数
      totalCount: totalCount,
      cartArray: cartArray,
      selectAll: selectAll
    })
  },
  // 左划删除,
  touchstart(e){
    // console.log(e.changedTouches)
    // 获取触摸坐标
    this.data.cartArray.forEach(cart => {
      if(cart.isTouchMove){
        cart.isTouchMove = false
      }
    })

    this.setData({
      startX: e.changedTouches[0].clientX,
      startY: e.changedTouches[0].clientY,
      cartArray:  this.data.cartArray
    })
  },
    // 获取滑动坐标
  touchmove(e){
    const index = e.currentTarget.dataset.index
    let startX = this.data.startX
    let startY = this.data.startY
    // 移动的XY
    let tMoveX = e.changedTouches[0].clientX
    let tMoveY = e.changedTouches[0].clientY
    // 获取角度
    var angel = this.angel({X:startX,startY},{X:tMoveX,Y:tMoveY})
    this.data.cartArray.forEach((cart,i) => {
      cart.isTouchMove = false
      // 滑动角度大于45度，不操作、
      if(Math.abs(angel) > 45){
        return
      }
      // 匹配滑动项和索引项
      if(i == index){
        if(tMoveX > startX){//右划
          cart.isTouchMove = false
        }else{
          cart.isTouchMove = true
        }
      }
    })
    this.setData({
      cartArray : this.data.cartArray
    })
  },
  angel(start,end){
    var _X = end.X - start.X
    var _Y = end.Y - start.Y
    // 返回角度 atan（）正切值
    return 360*Math.atan(_X/_Y) / (2*Math.PI) 
  },
  // 删除商品
  del(e){
    // 拿到当前索引和商品对象 、合计和数量
    const index = e.currentTarget.dataset.index
    const cartArray = this.data.cartArray
    // 获取本地商品数组
    let self = this
    wx.showModal({
      title: '温馨提示',
      content: '确定要删除该商品吗？',
      cancelText: '我再想想',
      cancelColor: '#e4393c',
      confirmColor: '#000000',
      success(res) {
        if (res.confirm) {
          wx.getStorage({
            key: 'cartInfo',
            success: function (res) {
              const partData = res.data;
              partData.forEach((cart, i) => {
                if (cart.id == cartArray[index].id) {
                  partData.splice(i, 1)
                }
              })
              // 存储
              wx.setStorage({
                key: 'cartInfo',
                data: partData,
              })
              // 更新页面数据
              self.update(index)
              // 
              wx.showToast({
                title: '已删除',
                icon: 'success',
                duration: 1000
              })
            },
          })
        } 
      }
    })
    // 注意
   
  },
  // 更新页面数据
  update(index){
    const cartArray = this.data.cartArray
    let totalMoney = Number(this.data.totalMoney)
    let totalCount = this.data.totalCount
    if(cartArray[index].isSelect){
      totalMoney -= Number(cartArray[index].price) * cartArray[index].total
      totalCount = cartArray[index].total
    }
    // 删除
    cartArray.splice(index,1)
    this.setData({
      cartArray: cartArray,
      totalMoney: totalMoney,
      totalCount: totalCount
    })
    // 更新bar
    cartArray.length > 0 ?
      wx.setTabBarBadge({
        index: 2,
        text: String(cartArray.length),
      }) : wx.removeTabBarBadge({
        index: 2,
      })
  },
  /**
   * 生命周期函数--监听页
   */
  onHide: function(){
    // const cartArrray = this.data.cartArray
    // wx.setStorage({
    //   key: 'cartInfo',
    //   data: cartArrray,
    // })
  },
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})